/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package buildings.reflection;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.lang.reflect.*;

/**
 *
 * @author VS
 */
public class SimpleConsoleReflection {

    public static void main(String[] args) {
        BufferedReader commandReader = new BufferedReader(new InputStreamReader(System.in));
        String className = null;
        String methodName = null;
        Double[] in = null;
        try {
            System.out.print("Введите имя класса: ");
            className = commandReader.readLine();
            System.out.print("Введите имя метода: ");
            methodName = commandReader.readLine();
            System.out.println("Введите числовые параметры метода. "
                    + "После последнего параметра введите done:");
            ArrayList params = new ArrayList();
            String buf;
            try {
                while (!(buf = commandReader.readLine()).equals("done")) {
                    params.add(Double.parseDouble(buf));
                }
            } catch (NumberFormatException e) {
                System.out.println("Неверный параметр!");
                return;
            }
            in = new Double[params.size()];
            for (int i = 0; i < params.size(); i++) {
                in[i] = (double) params.get(i);
            }
        } catch (IOException e) {
        }
        try {
            Class c = Class.forName(className);
            Method m = c.getMethod(methodName, new Class[]{in.getClass()});
            double res = (double) m.invoke(null, new Object[]{in});
            System.out.println(res);
        } catch (ClassNotFoundException e) {
            System.out.println("Класс не найден");
        } catch (NoSuchMethodException e) {
            System.out.println("Метод не найден");
        } catch (IllegalAccessException e) {
            System.out.println("Метод недоступен");
        } catch (InvocationTargetException e) {
            System.out.println("При вызове возникло исключение");
        }
    }
}
